package com.woniu.product.client;

import com.woniu.product.client.param.PageQuerySpuByTypeParam;
import com.woniu.product.client.param.ListCrowdProductParam;
import com.woniu.product.client.param.PageQuerySpuParam;
import com.woniu.product.client.param.SearchAllParam;
import com.woniu.product.client.result.PageSpuResultInfo;
import com.woniu.product.client.result.ProductItemResultInfo;
import com.woniu.product.client.result.SkuResultInfo;
import com.woniu.product.client.result.SpuResultInfo;
import com.woniu.result.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@FeignClient(contextId = "productQueryClient", name = "product")
public interface ProductQueryClient {
    /**
     * es搜索商品
     *
     * @param searchAllParam
     * @return
     */
    @PostMapping("search")
    public Result search(@RequestBody SearchAllParam searchAllParam);


    /**
     * 通过skuIds批量查询Skus详情
     *
     * @param skuIds
     * @return
     */
    @GetMapping("batchQuerySkus")
    public Result<List<SkuResultInfo>> batchQuerySkus(@RequestParam("skuIds") List<Integer> skuIds);

    /**
     * 根据spuId查询Spu详情
     *
     * @param spuId
     * @return
     */
    @GetMapping("/getSpuInfoBySpuId")
    public Result<SpuResultInfo> getSpuInfoBySpuId(@RequestParam("spuId") Integer spuId,@RequestParam("userId") Integer userId);


    /**
     * 根据属性Ids查询Sku详情
     *
     * @param propValueIds
     * @return
     */
    @GetMapping("getSkuInfoByPropValueIds")
    public Result<SkuResultInfo> getSkuInfoByPropValueIds(@RequestParam("propValueIds") List<Integer> propValueIds);

    /**
     * 根据skuId查询Sku详情
     *
     * @param skuId
     * @return
     */
    @GetMapping("getSkuInfoBySkuId")
    public Result<SkuResultInfo> getSkuInfoBySkuId(@RequestParam("skuId") Integer skuId);


    /**
     * 根据分类类别分页查询Spus
     *
     * @param pageQuerySpuParam
     * @return
     */
    @PostMapping("pageQuerySpusByCategoryId")
    public Result<PageSpuResultInfo> pageQuerySpusByCategoryId(@RequestBody PageQuerySpuParam pageQuerySpuParam);

    /**
     * 根据skuId查询商品的信息
     * @param skuId
     * @return
     */
    @GetMapping("getProductInfoBySkuId")
    public Result<ProductItemResultInfo> getProductInfoBySkuId(@RequestParam("skuId") Integer skuId);
    @PostMapping("pageQuerySpusByType")
    public Result<PageSpuResultInfo> pageQuerySpusByType(@RequestBody PageQuerySpuByTypeParam pageQuerySpuByTypeParam);

    @PostMapping("/pageListProductCrowd")
    Result pageListProductCrowd(@RequestBody ListCrowdProductParam listCrowdProductParam);



}
